package 位运算;

import java.util.HashMap;

public class test1 {
    boolean isUnique(String astr){
        // 用哈希表来解决
        HashMap<Character,Integer> map = new HashMap<>();
        char[] chars = astr.toCharArray(); // 先变为数组
        for(char ch:chars){
            if(!map.containsKey(ch))
                map.put(ch,1);
            else return false;
        }
        return true;
    }

    boolean isUnique1(String astr){
        // 用数组来解决
        int[] nums = new int[26]; //用来记录字母
        char[] chars = astr.toCharArray();
        for(char ch:chars){
            int flag = ch - 97;
            if(nums[flag]==0) nums[flag] = 1;
            else return false;
        }
        return true;
    }

    boolean isUnique2(String astr){
        // 用二进制(位图) 用0表示没出现 用1表示出现了
        if(astr.length()>26) return false;

        char[] chars = astr.toCharArray();
        int result=0;
        for(char ch:chars){
            int i = ch-97;
            result ^= (1<<i);
            int flag = result;
            // 判断是什么
            if(flag>>i==0) return false;
        }
        return true;
    }
}
